﻿/*----------------------------------------------------------------
// 公司名称：公司名称
// 
// 产品名称：Gaf
//
// 创 建 人：netcasewqs
// 创建日期：2022/3/4
// 邮    箱：netcasewqs@qq.com
//
// Copyright (C) 2022 Gaf，保留所有权利。
//
//----------------------------------------------------------------*/

namespace Gaf
{
    /// <summary>
    /// Framework State
    /// </summary>
    public enum FrameworkState
    {
        /// <summary>
        /// 未知状态
        /// </summary>
        Unknown,
        /// <summary>
        /// 开始安装所有插件
        /// </summary>
        Installing = 1,
        /// <summary>
        /// 表示所有插件已经安装并解析(AssemblyLoadContext 已加载），可以使用插件内的类型 
        /// <para>当框架已经安装了addin但是还不能运行时的状态称为Installed状态。</para>
        /// </summary>
        Installed = 2,
        /// <summary>
        /// 开始配置所有插件
        /// </summary>
        Configuring = 3,

        /// <summary>
        /// 表示所有插件已经经过自定义配置，而且可以启动。
        /// <remarks>
        /// 需要注意的是此时addin尚未激活。
        /// <para>在启动addin之前必须将其状态置为Configured。</para>
        /// </remarks> 
        /// </summary>
        Configured = 4,
      
        /// <summary>
        /// 描述addin处于启动过程中.
        /// <para>只有当调用start方法启动addin之后，addin进入Starting状态。</para>
        /// <para>当调用了addin的AddinActivator.start方法时，addin必须进入Starting状态。</para>
        /// <para>如果方法成功返回，而没有抛出异常，那么addin成功启动，并且进入到Active状态。</para>
        /// </summary>
        Starting = 7,

        /// <summary>
        /// 表示模块正在运行
        /// </summary>
        Started = 8,

        /// <summary>
        ///表示插件即将卸载
        /// </summary>
        Uninstalling = 11,


        /// <summary>
        /// 描述卸载addin之后而且不能再使用的状态.
        /// <para>只有当卸载了addin之后，addin的状态才是Uninstalled状态;</para>
        /// </summary>
        Uninstalled = 12,
    }

}
